package 算法.leetcode.str;

/**
 * @author lchenglong
 * @date 2022/5/10
 */
public class IntReverse {

    public static void main(String[] args) {
        IntReverse instance = new IntReverse();
//        System.out.println(Integer.MIN_VALUE);
//        System.out.println(Integer.MAX_VALUE);
        int ans = instance.reverse(-123);
        System.out.println(ans);
    }
    public int reverse(int x) {
        // 符号位
        int f = x>0?1:-1;
        x = Math.abs(x);
        String s = String.valueOf(x);
        int ans = 0;
        int b = 0;
        for (int i = 0;i<s.length();i++){
            int nb = (s.charAt(i)-'0');
            if (f>0){
                if (Math.pow(10,b)>Integer.MAX_VALUE|| Math.pow(10,b)*nb>Integer.MAX_VALUE||Math.pow(10,b)*nb+ans>Integer.MAX_VALUE){
                    // 已经超过最大值了
                    return 0;
                } else {
                    ans += nb * Math.pow(10,b);
                }
            } else {
                if (Math.pow(10,b)-1>Integer.MAX_VALUE|| Math.pow(10,b)*nb-1>Integer.MAX_VALUE||Math.pow(10,b)*nb+ans-1>Integer.MAX_VALUE){
                    // 已经超过最大值了
                    return 0;
                } else {
                    ans += nb * Math.pow(10,b);
                }
            }
            ++b;
        }
        return ans * f;
    }
}
